package com.cloudcreativity.blyg.utils;

import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;

/**
 * 整个程序的网络接口配置
 */
public interface APIService {
    /**
     * 网络请求的配置
     */
    long timeOut = 30;//网络超时
    /**
     * 整体的接口配置
     */
//    String TEST_HOST = "http://192.168.31.156:9010/";
    String TEST_HOST = "http://chaoshi-service.yungoux.com";
    String ONLINE_HOST = "http://chaoshi-serice.yungoux.com";
    String HOST_APP = AppConfig.DEBUG ? TEST_HOST : ONLINE_HOST;

    /**
     * @param barCode 商品编码
     * 从自己的服务器查询商品信息
     */
    @POST("/base/findGoods")
    @FormUrlEncoded
    Observable<String> findGoods(@Field("barCode") String barCode);

    /**
     * @see AppConfig
     * @param appKey 第三方服务密匙
     * @param barCode 商品编码
     * 从聚合商品查询接口查询商品数据
     */
    @POST("/base/queryGoods")
    @FormUrlEncoded
    Observable<String> queryGoods(@Field("appKey") String appKey,
                                  @Field("barCode") String barCode);

    @POST("/base/addBaseGoods")
    @FormUrlEncoded
    Observable<String> addGoods(@Field("barCode") String code,
                                @Field("brandName") String brandName,
                                @Field("categoryOneId") long categoryOneId,
                                @Field("categoryTwoId") long categoryTwoId,
                                @Field("name") String name,
                                @Field("price") int price,
                                @Field("specName") String specName,
                                @Field("unit") String unit);


    /**
     * 获取基本的商品分类
     */
    @GET("/base/selectAllCategory")
    Observable<String> getAllCategories();

    /**
     * @param page 页
     * @param size 大小
     * 获取基本的商品库
     */
    @POST("/shop/queryBaseGoods")
    @FormUrlEncoded
    Observable<String> getAllGoods(@Field("pageNum") int page,
                                   @Field("pageSize") int size);

    @GET("/shop/find")
    Observable<String> getLastVersion();

    @POST("/shop/shopperLogin")
    @FormUrlEncoded
    Observable<String> login(@Field("mobile") String mobile,
                             @Field("password") String pwd);

    /**
     * @param old 旧密码
     * @param pwd 新密码
     * 修改密码
     */
    @POST("/shop/changePassWord")
    @FormUrlEncoded
    Observable<String> modifyPwd(@Field("oldPassword") String old,
                                 @Field("newPassword") String pwd);

    /**
     * @param payId 1 现金 2 扫码支付
     * @param shopId 店铺id
     * @param totalMoney 订单总额
     * @param shouldPay 应付
     * @param discountMoney 折扣金额
     * @param actualMoney 实收金额
     * @param orderDetailDomains 商品详情
     */
    @POST("/shop/addOrderInfo")
    @FormUrlEncoded
    Observable<String> addOrder(@Field("payId") int payId,
                                @Field("shopId") int shopId,
                                @Field("totalMoney") int totalMoney,
                                @Field("shouldPay") int shouldPay,
                                @Field("discountMoney") int discountMoney,
                                @Field("actualPay") int actualMoney,
                                @Field("shopGoodsDomain") String orderDetailDomains);

    @POST("/shop/pay")
    @FormUrlEncoded
    Observable<String>  pay(@Field("amount")int amount,
                            @Field("orderId")int oid,
                            @Field("orderNo") String orderNo,
                            @Field("qrCode")String qrCode,
                            @Field("shopId")int shopId);

    @POST("/shop/queryOrderInfo")
    @FormUrlEncoded
    Observable<String> getOrders(@Field("pageNum") int pageNum,
                                 @Field("pageSize") int pageSize,
                                 @Field("shopId") int shopId,
                                 @Field("year") Integer year,
                                 @Field("month") Integer month,
                                 @Field("day") Integer day);

    /**
     * @param shopId 商铺id
     * @param year 年
     * @param month 月
     * @param day 日
     * 按要求查询全部的订单数的金额
     */
    @POST("/shop/getOneDayOrderAndIncome")
    @FormUrlEncoded
    Observable<String> getTotalAccount(@Field("shopId") int shopId,
                                       @Field("year") Integer year,
                                       @Field("month") Integer month,
                                       @Field("day")Integer day);

    /**
     * @param orderId 订单id
     * 查询订单详情
     */
    @POST("/shop/queryOrderDetailInfo")
    @FormUrlEncoded
    Observable<String> getOrderDetail(@Field("orderId") int orderId);

    /**
     * @param shopId 店铺id
     * @param year 年
     * @param month 月
     * @param day 日
     * @param page 页数
     * @param size 大小
     *             查询销量统计
     */
    @POST("/shop/selectGoodsRank")
    @FormUrlEncoded
    Observable<String> getStatistics(@Field("shopId") int shopId,
                                     @Field("year") Integer year,
                                     @Field("month") Integer month,
                                     @Field("day") Integer day,
                                     @Field("pageNum") int page,
                                     @Field("pageSize") int size);

}
